home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nebula 1
/
Nebula One.iso
/
Mail
/
denext
/
dertf.l
< prev
next >
Wrap
Text File
|
1991-10-06
|
4KB
|
354 lines
/*
* A simple Lex grammar for Microsoft RTF.
*
* Copyright (c) 1990, Keith Edwards
* May be freely used, modified, distributed, or copied as long as
* this notice stays intact.
*
* Keith Edwards
* Georgia Tech / SERC / Multimedia Group
* April 5, 1990
* <keith@dali.gatech.edu>
*/
%e 4000
%p 9000
%n 1500
%a 4000
%o 5000
digit [0-9]
num [-]?[0-9]+
alpha [a-zA-Z]
alphaspace [a-zA-Z ]
alphanum [a-zA-Z0-9]
alphanumdot [a-zA-Z0-9.]
alphanumdotund [a-zA-Z0-9._]
alphanumseq {alphanum}+
nil \\fnil
roman \\froman
swiss \\fswiss
modern \\fmodern
script \\fscript
decor \\fdecor
tech \\ftech
fctl ({nil}|{roman}|{swiss}|{modern}|{script}|{decor}|{tech})
int pos; /* so far used only for attachments */
%%
\\\{ printf("{");
\\\} printf("}");
\\\ printf("\\");
\n ;
\\deff{num} ;
\\defformat ;
\\deftab{num} ;
\\\n printf("\n");
\{ ;
\} ;
\\ansi ;
\\mac ;
\\pc ;
\\pca ;
\\fonttbl\\f{num} ;
{fctl}\ [a-zA-Z]+\; ;
\\sbasedon{num} ;
\\snext{num} ;
\\red{num} ;
\\green{num} ;
\\blue{num} ;
\\cf{num} ;
\\cb{num} ;
\\colortbl ;
\\pict ;
\\brdrs ;
\\brdrdb ;
\\brdrth ;
\\brdrsh ;
\\brdrdot ;
\\brdrhair ;
\\macpict ;
\\wmetafile{num} ;
\\wbitmap{num} ;
\\picw{num} ;
\\pich{num} ;
\\picwgoal{num} ;
\\pichgoal{num} ;
\\picscalex{num} ;
\\picscaley{num} ;
\\picscaled ;
\\piccropt{num} ;
\\piccropb{num} ;
\\piccropl{num} ;
\\piccropr{num} ;
\\wbmbitspixel{num} ;
\\wbmplanes{num} ;
\\wbmwidthbytes{num} ;
\\bin{num} ;
\\footnote ;
\\chftn ;
\\chatn ;
\\annotation ;
\\atnid ;
\\headerl ;
\\headerr ;
\\headerf ;
\\footerl ;
\\footerr ;
\\footerf ;
\\title ;
\\subject ;
\\author ;
\\operator ;
\\keywords ;
\\comment ;
\\version{num} ;
\\doccomm ;
\\vern{num} ;
\\creatim ;
\\revtim ;
\\printim ;
\\buptim ;
\\edmins{num} ;
\\yr{num} ;
\\mo{num} ;
\\dy{num} ;
\\hr{num} ;
\\min{num} ;
\\nofpages{num} ;
\\nofwords{num} ;
\\nofchars{num} ;
\\id{num} ;
\\flddirty ;
\\fldedit ;
\\fldlock ;
\\fldpriv ;
\\fldinst ;
\\fldrslt ;
\\bxe ;
\\ixe ;
\\txe[ ]{alphanumseq} ;
\\rxe[ ]{alphanumseq} ;
\\tc ;
\\tcf{num} ;
\\tcl{num} ;
\\bkmkstart ;
\\bkmkend ;
\\paperw{num} ;
\\paperh{num} ;
\\margl{num} ;
\\margr{num} ;
\\margt{num} ;
\\margb{num} ;
\\facingp ;
\\gutter{num} ;
\\deftab{num} ;
\\widowctrl ;
\\hyphhotz ;
\\ftnsep ;
\\ftnsepc ;
\\ftncn ;
\\endnotes ;
\\enddoc ;
\\ftntj ;
\\ftnbj ;
\\ftnstart{num} ;
\\ftnrestart ;
\\pgnstart{num} ;
\\linestart{num} ;
\\landscape ;
\\fracwidth ;
\\nextfile ;
\\template ;
\\makebackup ;
\\defformat ;
\\revisions ;
\\margmirror ;
\\revprop{num} ;
\\revbar{num} ;
\\sectd ;
\\sbknone ;
\\sbkcol ;
\\sbkpage ;
\\sbkeven ;
\\sbkodd ;
\\pgnstarts{num} ;
\\pgncont ;
\\pgnrestart ;
\\pgndec ;
\\pgnucrm ;
\\pgnlcrm ;
\\pgnucltr ;
\\pgnlcltr ;
\\pgnx{num} ;
\\pgny{num} ;
\\headery{num} ;
\\footery{num} ;
\\linemod{num} ;
\\linex{num} ;
\\linestarts{num} ;
\\linerestart ;
\\lineppage ;
\\linecont ;
\\vertalt ;
\\vertal ;
\\vertalc ;
\\vertalj ;
\\cols{num} ;
\\colsx{num} ;
\\linebetcol ;
\\endnhere ;
\\titlepg ;
\\brdrt ;
\\brdrb ;
\\brdrl ;
\\brdrr ;
\\box ;
\\pard ;
\\s{num} ;
\\ql ;
\\qr ;
\\qj ;
\\qc ;
\\fi{num} ;
\\li{num} ;
\\ri{num} ;
\\sb{num} ;
\\sa{num} ;
\\sl{num} ;
\\intbl ;
\\keep ;
\\keepn ;
\\sbys ;
\\pagebb ;
\\noline ;
\\tx{num} ;
\\tqr ;
\\tqc ;
\\tqdec ;
\\tb ;
\\brdrbar ;
\\brdrbtw ;
\\brdrs ;
\\brdrth ;
\\brdrsh ;
\\brdrdb ;
\\brdrdot ;
\\brdrhair ;
\\brsp{num} ;
\\tldot ;
\\tlhyph ;
\\tlul ;
\\tlth ;
\\posx{num} ;
\\posxc ;
\\posxl ;
\\posxo ;
\\posxr ;
\\posy{num} ;
\\posyil ;
\\posyt ;
\\posyc ;
\\posyb ;
\\absw{num} ;
\\dxfrtext{num} ;
\\pvmrg ;
\\pvpg ;
\\phmrg ;
\\phpg ;
\\phcol
\\clbrdrb ;
\\clbrdrt ;
\\clbrdrl ;
\\clbrdrr ;
\\trowd ;
\\trql ;
\\trqr ;
\\trqc ;
\\trgaph{num} ;
\\trrh{num} ;
\\trleft{num} ;
\\cellx{num} ;
\\clmgf ;
\\clmrg ;
\\plain ;
\\b ;
\\i ;
\\strike ;
\\outl ;
\\shad ;
\\scaps ;
\\caps ;
\\v ;
\\f{num} ;
\\fs{num} ;
\\expnd{num} ;
\\ul ;
\\ulw ;
\\uldb ;
\\ulnone ;
\\up{num} ;
\\dn{num} ;
\\revised ;
\\chdate ;
\\chtime ;
\\chpgn ;
\\chftn ;
\\chatn ;
\\chftnsep ;
\\\| ;
\\~ ;
\\\- ;
\\_ ;
\\'[0-9a-fA-F][0-9a-fA-F] ;
\\cell ;
\\row ;
\\par ;
\\sect ;
\\page ;
\\column ;
\\line ;
\\tab ;
\\: ;
\\\* ;
\\rtf{num} ;
\\gray{num} ;
\\attachment{num}[ ]{alphanumdotund}+ {
pos=index( yytext, ' ');
if (pos)
printf("[ Attachment inserted here: %s ]\n", pos );
}
%%
main()
{
yylex();
}